package com.example.demo.listener.activiti;

import com.example.demo.dao.LoginUserDao;
import com.example.demo.model.LoginUserEntity;
import com.example.demo.tools.SpringUtils;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;

import java.math.BigDecimal;
import java.util.Random;

public class DynamicAssignmentOperatorFromClassUser implements TaskListener {
    private static final long serialVersionUID = -1800938650128648898L;

    /**
     * 用来指定任务的办理人
     * @param delegateTask
     */
    @Override
    public void notify(DelegateTask delegateTask) {
        //可以指定个人任务的办理人，也可以指定组任务的办理人
        //个人任务：通过类去查询数据库，将下一个任务的办理人查询获取，然后通过setAssignee（）函数指定任务的办理人
        LoginUserDao loginUserDao = (LoginUserDao) SpringUtils.getBean("loginUserDao");
        Random random = new Random();
        BigDecimal bigDecimal = new BigDecimal(random.nextInt(3));
        bigDecimal = bigDecimal.add(new BigDecimal(1));
        LoginUserEntity loginUserEntity = loginUserDao.selectById(bigDecimal.longValue());
        delegateTask.setAssignee(loginUserEntity.getLoginName());
    }

}
